package com.xyoto.community.mapper.comment;

import com.xyoto.community.dto.ListCommentReplyDTO;
import com.xyoto.community.entity.comment.DynamicCommentReply;
import com.xyoto.community.po.DynamicCommentReplyDetailPO;
import com.xyoto.community.po.DynamicCommentReplyPo;
import com.xyoto.community.po.MessageDynamicCommentReplyPO;
import com.xyoto.community.po.ReplyIdAndUserIdPO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 动态评论回复表mapper
 */
public interface DynamicCommentReplyMapper {

    /**
     * 新增一条动态评论回复记录
     * @param dynamicCommentReply
     * @return
     */
    Integer insertOne(DynamicCommentReply dynamicCommentReply);

    /**
     * 根据动态评论回复id查动态评论回复记录
     * @param dynamicCommentReplyId
     * @return
     */
    DynamicCommentReply selectOneByDynamicCommentReplyId(Integer dynamicCommentReplyId);

    /**
     * 获取评论下的回复po
     * @param commentIdList 评论id list
     * @param userId 当前登录用户id
     * @return 回复po
     */
    List<DynamicCommentReplyPo> selectReplyListVo(@Param("list") List<Integer> commentIdList , Integer userId);

    /**
     * 获取 评论 回复内容
     * @param moduleId 评论回复id
     * @return  回复内容
     */
    String getOneDynamicCommentReplyContentByDynamicCommentReplyId(Integer moduleId);

    /**
     * 删除动态评论回复
     * @param dynamicCommentReply 实体
     * @return
     */
    Integer removeDynamicCommentReply(DynamicCommentReply dynamicCommentReply);

    /**
     * 获取动态评论回复id列表
     * @param dynamicCommentId 动态评论id
     * @return
     */
    List<Integer> getDynamicCommentReplyIdList(Integer dynamicCommentId);


    /**
     * 获取 回复  的内容
     * @param dynamicReplyIds 回复的id集合
     * @return 回复的列表数据
     */
    List<DynamicCommentReplyPo> getDynamicCommentReplyByIds(List<Integer> dynamicReplyIds);

    /**
     * 获取回复内容列表
     * @param dynamicCommentReplyIds 回复的id集合
     * @return 回复的列表数据
     */
    List<MessageDynamicCommentReplyPO> getDynamicCommentReplyListByIds(List<Integer> dynamicCommentReplyIds);

    /**
     * 根据回复id列表获取该回复的主人id列表
     * @author 廖振辉
     * @param targetReplyIdList 回复id列表
     * @return {@link List<ReplyIdAndUserIdPO>} 回复的主人id与动态id 列表
     */
    List<ReplyIdAndUserIdPO> selectUserIdBatchReplyIds(List<Integer> targetReplyIdList);

    /**
     * 根据动态id统计动态的回复数
     * @author 廖振辉
     * @param dynamicId
     * @return {@link Integer}
     */
    Integer countReplyByDynamicId(Integer dynamicId);

    /**
     * 根据评论id获取到回复信息记录以及目标回复用户id
     * @author 廖振辉
     * @param commentId 评论id
     * @return {@link List<DynamicCommentReplyDetailPO>}
     */
    List<DynamicCommentReplyDetailPO> selectListByCommentId(Integer commentId);

}
